package tt.dz.egobus.servicemanager.core.config;

import org.springframework.core.convert.converter.Converter;

/**
 * @author Anson
 * @date 17-8-7
 * @name 配置获取器
 * @since 1.0.6
 */
public interface ConfigAccess {

    /**
     * @param type   当前配置类型
     * @param module 模块名称
     * @author Anson
     * @date 17-8-8
     * @name 配置的转换器
     * @since 1.0.6
     */
    Converter<String, String> keyConvert(String module, ConfigAccessType type);

    /**
     * @param key   配置key
     * @param clazz 当前返回值类型
     * @author Anson
     * @date 17-8-7
     * @name 获取配置
     * @since 1.0.6
     */
    <T> T value(String key, Class<T> clazz);

    /**
     * @param key          配置key
     * @param defaultValue 为空或者空字符串的时候默认值
     * @author Anson
     * @date 17-8-7
     * @name 获取配置
     * @since 1.0.6
     */
    <T> T value(String key, T defaultValue);
}
